import { getToken } from '@/utils/auth';
import global from '@/global';
import {loginPage, noLoginAuthWhiteList, checkWhite} from '@/utils/page-url';

let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"]
list.forEach(item => {
	uni.addInterceptor(item,{
		invoke: (to: any) => {
			console.warn("路由拦截器", to)
			// 是否是登录页
			if (to.url === loginPage) {
				console.warn("路由拦截器，是登录页")
				return true;
			}
			// 是否有登陆权限
			if (!global.loginAuth) {
				console.warn("路由拦截器，未登录，没有登陆权限")
				if (noLoginAuthWhiteList.includes(to.url)) {
					console.warn("路由拦截器，未登录，在登陆权限白名单中")
					return true;
				} else {
					console.warn("路由拦截器，未登录，不在登陆权限白名单中")
				}
			}
			// 其他页面是否有token
			if (getToken()) {
				console.warn("路由拦截器，已登录")
				return true;
			} else {
				// 没有则检查是否在白名单中
				if (checkWhite(to.url)) {
					console.warn("路由拦截器，未登录，在白名单中")
					return true;
				}
			}
			console.warn("路由拦截器，未登录，不在白名单中")
			// @ts-ignore
			uni.$uv.route({
				type: 'to',
				url: loginPage
			});
			return false;
		},
		fail: (err:any) => {
			console.log(err)
		}
	});
})